package org.sky.algorithm.sort;

import java.util.Arrays;

/**
 * 选择排序
 *
 * @author fog
 * @date 2021/11/7
 */

public class Select {

    public static void main(String[] args) {

        int[] arr = new int[]{4, 6, 8, 2, 1, 3, 0};

        System.out.println(Arrays.toString(arr));

        selectSort(arr);

        System.out.println(Arrays.toString(arr));

    }

    private static void selectSort(int[] arr) {


        for (int i = 0; i < arr.length; i++) {

            int minIndex = i;

            // 把当前遍历的数和前面的数依次进行比较，并记录最小数的下标
            for (int j = i + 1; j < arr.length; j++) {

                // 如果后面比较的数比记录的最小数小
                if (arr[minIndex] > arr[j]) {
                    // 记录下最小的那个数的下标
                    minIndex = j;
                }

            }

            // 如果最小数和当前遍历数的下标不一致，说明下标为 minIndex 的数比当前遍历的数更小
            if (1 != minIndex) {
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }

        }

    }
}
